package com.bill.concurrency.example.singleton;

import com.bill.concurrency.annotations.ThreadSafe;
import lombok.extern.slf4j.Slf4j;

/**
 * 构建一个单例类。
 * 饿汉模式。单例实例在装载类对象就实例化。
 * 还可以使用静态块
 */
@Slf4j
@ThreadSafe
public class SingletonExample6 {

    /**
     * 注意此处申明一定要放在static块的前面，否则会出错。
     */
    private static SingletonExample6 instance=null;

    static {
        instance=new SingletonExample6();
    }

    /**
     * 私有构造器，一定要有。
     */
    private SingletonExample6(){

    }

    //静态工厂方法。
    public static SingletonExample6 getInstance(){
          return instance;
    }

    public static void main(String[] args) {
        SingletonExample6 singletonExample1=SingletonExample6.getInstance();
        SingletonExample6 singletonExample2=SingletonExample6.getInstance();
        log.info("{}",singletonExample1.hashCode());
        log.info("{}",singletonExample2.hashCode());
    }

}
